0. 블루 프린트

어떤 블루프린트도 Target = "this"는 해당 블루프린트를 가리킨다.

1. 액터


루트 노드는 부모 클래스의 이름을 적어 준다. 다른 블루프린트 클래스를 사용해도 가능하다.

<ATopAttackMissile>

...

</ATopAttackMissile>

1.2. Properties 노드


부모 클래스에서 정의되어 있는 property의 값을 변경할 수 있다. 단, 부모 클래스에서 해당 property를 노출시켜 주어야 한다.

    <Properties>

        <float Name = "MinArrivalThresholdSq" Value = "64"/>

        <float Name = "MaxArrivalThresholdSq" Value = "100"/>

        <float Name = "MinRotationZStep" Value = "-45"/>

        <float Name = "MaxRotationZStep" Value = "45"/>

    </Properties>

Name 속성은 해당 프로퍼티의 변수 명이고, Value는 값을 의미한다.
현재 설정 가능한 데이터 타입은 아래와 같다.

float
bool
string
array_string

1.3. Variables 노드


해당 블루프린트에서 Property를 추가하는 노드다. 부모 노드의 이름이 <Variables>인 것만 제외하면, Properties와 같은 문법을 사용한다.

    <Variables>
        <string Name = "SM" Value = "SM_MetalRing"/>

        <array_string Name = "Test">
            <string Value = "a"/>
        </array_string>
    </Variables>

1.4. Components 노드


부모 클래스에서 정의된 컴포넌트 또는 새로 정의할 컴포넌트에 대한 설정을 할 수 있다. 마찬가지로 BP 컴포넌트 클래스를 사용할 수 있으며, Context가 해당 Actor인 것만 제외하면 컴포넌트 블루프린트와 문법이 같다.

1.5. Events 노드


C++ 클래스에서 정의된 이벤트에서 함수를 호출 할 수 있다.
<Events> 노드 안에서 이벤트를 정의하고, 해당 이벤트 안에서 함수를 호출하면 된다.

<Events>     <!--이벤트 노드-->
	<BeginPlay>   <!--Begin Play 이벤트 노드-->
		<Call Func = "SpawnActor" Target = "this">   <!--함수 호출 노드-->
			<string Name = "Class" Value = "BP_Projectile"/>
			<Call Func = "GetActorTransform" Name = "Transform" Target = "this"/>
		</Call>
	</BeginPlay>

	<OnHit>
		<Call Func = "PlayParticle" Target = "this">
			<string Name = "ParticleName" Value = "Explosion"/>
		</Call>
	</OnHit>

	<OnBeginColdLaunch>
		<Call Func = "LoadAnimation" Target = "ObjAnimComp">
			<string Name = "AssetName" Value = "OA_ColdLaunch"/>
			<string Name = "AnimName" Value = "Projectile"/>
		</Call>

		<Call Func = "Play" Target = "ObjAnimComp">
			<bool Name = "Loop" Value = "false"/>
		</Call>
	</OnBeginColdLaunch>
</Events>

1.5.1. 함수 노드


기본적으로 Call 노드로 시작한다.
함수에 파라미터가 필요한 경우, 자식 노드로 표현할 수 있는데 현재 파라미터로 들어올 수 있는 노드는 세종류다:

  1. 상수
  2. 프로퍼티
  3. 함수

기본적으로 Name이 해당 함수의 파라미터 이름이다.

1.5.1.1. 상수 파라미터


Properties나 Variables 의 노드 처럼 작성하면 된다.

<string Name = "AssetName" Value = "OA_ColdLaunch"/>

1.5.1.2. 프로퍼티 파라미터


상수 파라미터와 비슷하지만, Value노드의 역할이 다르고, Target 속성이 추가된다.

<string Name = "AssetName" Value = "AssetName" Target = "this"/>

Value는 해당 프로퍼티의 이름을 나타내게 되고, Target은 이 프로퍼티를 가진 주체를 의미한다.

1.5.1.3. 함수 파라미터


함수 노드를 호출할 때 처럼 <Call> 노드를 만들면 된다. 단, Name 속성을 추가해서 어떤 값에 이 함수의 리턴값이 들어갈지를 설정해 주면 된다.

<Call Func = "GetAnimName" Target = "this" Name = "AnimName"/>

2. 컴포넌트


기본적으로 액터 블루프린트와 같은 문법을 사용한다. 차이점은

  1. 루트 노드에 액터클래스가 아닌 컴포넌트 클래스를 작성한다
  2. Components 노드가 존재하지 않는다.

이 외에 Properties, Variables, Events는 같은 문법을 사용하면 된다.

<WProjectileMovementComponent>

...

</WProjectileMovementComponent>